package com.woniu.common.utils;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * @author 房东
 * @version 1.0
 * @date 2021/8/13 11:56
 * @Description 结果集
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ResultVO<E> implements Serializable {
    private Integer code;     // 响应码
    private String message;     // 响应简要信息
    private E data;        // 响应的主体数据

    // 不用返回值的构造器
    public ResultVO(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    // 查询成功,状态码200
    public static <E> ResultVO<E> success(String message){
        return new ResultVO<>(Constants.SUCCESS,message);
    }

    // 查询成功并返回数据,状态码200
    public static <E> ResultVO<E> success(String message, E data){
        return new ResultVO<>(Constants.SUCCESS,message, data);
    }

    // 执行失败,抛异常,报500错误
    public static <E> ResultVO<E> fail(String message, E data){
        return new ResultVO<>(Constants.FAIL,message, data);
    }

    // 系统内部错误,报500错误
    public static <E> ResultVO<E> fail(String message){
        return new ResultVO<>(Constants.FAIL,message);
    }

}
